/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import dao.ClienteDAO;
import dao.PlataformaDAO;
import dao.AmbienteDAO;
import dao.PorcentagemProjetoDAO;
import dao.ProjetoDAO;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import model.Cliente;
import model.Plataforma;
import model.Projeto;
import model.Ambiente;

/**
 *
 * @author Sunder
 */
@ManagedBean
@SessionScoped
public class BeanCadastroProjeto {
    private Projeto projeto = new Projeto();
    private DataModel listaProjetos;
    private List<Ambiente> listaAmbientes = new ArrayList<Ambiente>();
    private List<Plataforma> listaPlataformas = new ArrayList<Plataforma>();
    private List<Cliente> listaClientes = new ArrayList<Cliente>();
    private Ambiente ambienteSelecionado;
    private Plataforma plataformaSelecionada;
    private Cliente clienteSelecionado;
    private Long id = null;
    /**
     * Creates a new instance of BeanCadastroProjeto
     */
    public BeanCadastroProjeto() {
    }

    public Projeto getProjeto() {
        return projeto;
    }

    public void setProjeto(Projeto projeto) {
        this.projeto = projeto;
    }

    public DataModel getListaProjetos() {
       ProjetoDAO projetoDAO = new ProjetoDAO();
		try {
			listaProjetos = new ListDataModel(projetoDAO.getList());
		} catch (Exception e) {
			System.out.println(e);
		}
		return listaProjetos;
    }

    public void setListaProjetos(DataModel listaProjetos) {
        this.listaProjetos = listaProjetos;
    }

    public List<Ambiente> getListaAmbientes() {
        AmbienteDAO ambienteDAO = new AmbienteDAO();
        try {
            listaAmbientes = ambienteDAO.getList();
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
        return listaAmbientes;
    }

    public void setListaAmbientes(List<Ambiente> listaAmbientes) {
        this.listaAmbientes = listaAmbientes;
    }

    public List<Plataforma> getListaPlataformas() {
        PlataformaDAO plataformaDAO = new PlataformaDAO();
        try {
            listaPlataformas = plataformaDAO.getList();
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
        return listaPlataformas;
    }

    public void setListaPlataformas(List<Plataforma> listaPlataformas) {
        this.listaPlataformas = listaPlataformas;
    }

    public List<Cliente> getListaClientes() {
        ClienteDAO clienteDAO = new ClienteDAO();
        try {
            listaClientes = clienteDAO.getList();
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
        return listaClientes;
    }

    public void setListaClientes(List<Cliente> listaClientes) {
        this.listaClientes = listaClientes;
    }

    public Ambiente getAmbienteSelecionado() {
        return ambienteSelecionado;
    }

    public void setAmbienteSelecionado(Ambiente ambienteSelecionado) {
        this.ambienteSelecionado = ambienteSelecionado;
    }

    public Plataforma getPlataformaSelecionada() {
        return plataformaSelecionada;
    }

    public void setPlataformaSelecionada(Plataforma plataformaSelecionada) {
        this.plataformaSelecionada = plataformaSelecionada;
    }

    public Cliente getClienteSelecionado() {
        return clienteSelecionado;
    }

    public void setClienteSelecionado(Cliente clienteSelecionado) {
        this.clienteSelecionado = clienteSelecionado;
    }
    
    public void cadastrarProjeto(){
        ProjetoDAO projetoDAO = new ProjetoDAO();
        model.PorcentagemProjeto porcentagemProjeto = new model.PorcentagemProjeto();
        PorcentagemProjetoDAO porcentagemProjetoDAO = new PorcentagemProjetoDAO();
        projeto.setAmbiente(ambienteSelecionado);
        projeto.setCliente(clienteSelecionado);
        projeto.setPlataforma(plataformaSelecionada);
        porcentagemProjeto.setProjeto(projeto);
        porcentagemProjeto.setPorcentagem(0);
        try {
            projetoDAO.save(projeto);
            porcentagemProjetoDAO.save(porcentagemProjeto);
        } catch (Exception ex) {
            Logger.getLogger(BeanCadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
     public void alterarProjeto(){
        ProjetoDAO projetoDAO = new ProjetoDAO();
        projeto.setAmbiente(ambienteSelecionado);
        projeto.setCliente(clienteSelecionado);
        projeto.setPlataforma(plataformaSelecionada);
        try {
            projetoDAO.save(projeto);
        } catch (Exception ex) {
            Logger.getLogger(BeanCadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        id = null;
        novoProjeto();
    }
    
      public void novoProjeto(){
        projeto = null;
        projeto = new Projeto();
        id = null;
    }
     
    public void preparaAlteracao(){
        projeto = (Projeto)(listaProjetos.getRowData());
        id = projeto.getId();
        plataformaSelecionada = projeto.getPlataforma();
        clienteSelecionado = projeto.getCliente();
        ambienteSelecionado = projeto.getAmbiente();
    }
    
    public void excluirProjeto(){
        ProjetoDAO projetoDAO = new ProjetoDAO();
        try {
            projetoDAO.deletarProjeto((Projeto)(listaProjetos.getRowData()));
        } catch (Exception e) {
            System.out.println("Erro: "+e);
        }
        preparaAlteracao();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    
}
